/* 
 * File:   Ponto.c
 * Author: Vagner Clementino
 *
 * Created on 16 de Abril de 2012, 23:00
 */

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include "Ponto.h"

Ponto* cria_ponto_vazio(void){
    Ponto* p;
    
    p = (Ponto*) malloc(sizeof(Ponto));

    if(p == NULL){
    fprintf(stderr,"Erro ao alocar memoria para a estrutura Ponto\n");
    exit(-1);
    }
    /*Definindo valores padrao*/    
    p->x= 0;
    p->y = 0;
    
    return (p);    
}

void define_ponto(Ponto* p, float x, float y){
    if(p != NULL){
        p->x = x;
        p->y = y;
    }else{
        printf("Erro ao definir ponto. Ponto vazio\n");
    }
}

void remove_ponto(Ponto* p){
    free(p);
}

void imprime_ponto(const Ponto* p){
    if(p == NULL){
        printf("Ponto vazio.\n");
    }else{
        printf("Abcissa: %.2f\n",p->x);
        printf("Ordenada: %.2f\n",p->y);
    }
}

float distancia_pontos(const Ponto* p1, const Ponto* p2){
    double distancia = 0.0;
    
    distancia = sqrt (( pow( (p2->y - p1->y), 2 ) ) + ( pow( (p2->x - p1->x), 2 ) ));
    return distancia;
}